package qp.src.app.client.widget;

public class PageMode {



	  public static final PageMode NORMAL = new PageMode("NORMAL");
	  public static final PageMode EDIT = new PageMode("EDIT");
	  public static final PageMode VIEW = new PageMode("VIEW");
	  public static final PageMode ADD = new PageMode("ADD");
	  public static final PageMode MANAGE = new PageMode("MANAGE");
	  /**
	   * ถ้ามีการ call service แล้วเกิดการ error ขึ้น มีผลให้ application เริ่มจาก login อีกครั้ง
	   */
	  public static final PageMode ERROR_FAIL     = new PageMode("MODE_ERROR_FAIL");
	  public static final PageMode ERROR_BACK_TO_MAIN = new PageMode("MODE_ERROR_BACK_TO_MAIN");

	  //****************************************************************************

	  //****************************************************************************
	  private String value;

	  protected PageMode(String value) {
	    this.value = value;
	  }

	  public String getValue() {
	    return value;
	  }

	  public String toString() {
	    return getValue();
	  }

	  public boolean equals(Object object) {
	    if (object instanceof PageMode) {
	      PageMode that = (PageMode) object;

	      return this.value.equals( that.value );
	    }
	    else {
	      return false;
	    }
	  }

	  //****************************************************************************

	  public static PageMode valueOf(String str) {
	    return new PageMode(str);
	  }

	  // Helper ********************************************************************

	  public boolean isExistModes(PageMode pageMode1) {
	    return this.equals(pageMode1);
	  }

	  public boolean isExistModes(PageMode pageMode1, PageMode pageMode2) {
	    return isExistModes(new PageMode[] {pageMode1, pageMode2});
	  }

	  public boolean isExistModes(
	    PageMode pageMode1,
	    PageMode pageMode2,
	    PageMode pageMode3
	  ) {
	    return isExistModes(new PageMode[] {pageMode1, pageMode2, pageMode3});
	  }

	  private boolean isExistModes(PageMode[] pageModes) {
	    for (int i = 0; i < pageModes.length; i++) {
	      if (this.equals(pageModes[i])) {
	        return true;
	      }
	    }
	    return false;
	  }
	
}
